//package com.example.annotation.use;
//
//import com.sun.istack.internal.NotNull;
//
//public class Test {
//    public static void main(String[] args) {
//        // 获取Person定义的@Report注解:
//        Report report = Person.class.getAnnotation(Report.class);
//        int type = report.type();
//        String level = report.level();
//    }
//}
//
//class Test1 {
//    public static void main(String[] args) {
//        try {
//            Class cls = Person.class;
//            if (cls.isAnnotationPresent(Report.class)) {
//                Report report = cls.getAnnotation(Report.class);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}
//
//class Test2 {
//    public static void main(String[] args) {
//        try {
//            Class cls = Person.class;
//            Report report = cls.getAnnotation(Report.class);
//            if (report != null) {
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}
//
//class Test3 {
//    public void hello(@NotNull @Range(max = 5) String name, @NotNull String prefix) {
//    }
//}
//
//
//class Test4 {
//    {
//        // 获取Method实例:
//        Method m = ...
//        // 获取所有参数的Annotation:
//        Annotation[][] annos = m.getParameterAnnotations();
//        // 第一个参数（索引为0）的所有Annotation:
//        Annotation[] annosOfName = annos[0];
//        for (Annotation anno : annosOfName) {
//            if (anno instanceof Range r) { // @Range注解
//                r.max();
//            }
//            if (anno instanceof NotNull n) { // @NotNull注解
//                //
//            }
//        }
//    }
//}
//
//class Test5{
//    void check(Person person) throws IllegalArgumentException, ReflectiveOperationException {
//        // 遍历所有Field:
//        for (Field field : person.getClass().getFields()) {
//            // 获取Field定义的@Range:
//            Range range = field.getAnnotation(Range.class);
//            // 如果@Range存在:
//            if (range != null) {
//                // 获取Field的值:
//                Object value = field.get(person);
//                // 如果值是String:
//                if (value instanceof String s) {
//                    // 判断值是否满足@Range的min/max:
//                    if (s.length() < range.min() || s.length() > range.max()) {
//                        throw new IllegalArgumentException("Invalid field: " + field.getName());
//                    }
//                }
//            }
//        }
//    }
//}
//
//
//
